{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 机器学习—分类之概率生成模型\n",
    "***  \n",
    "李宏毅老师课程笔记——三岁白话系列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "<font size=3>\n",
    "\n",
    "## 分类 \n",
    "定义：按照种类、等级或性质分别归类。  \n",
    "\n",
    "我们要做的就是找到一个模型（函数）可以对数据进行分类最后给出一个对应的预测类别![在这里插入图片描述](https://img-blog.csdnimg.cn/20210326225741919.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "我们可以可以通过一些数据的导入通过训练确定模型的一些参数，最后推测的类型。  \n",
    "### 回归与分类\n",
    "分类问题不适合使用回归的方式来完成，不是说不行，就是最后的模型会惩罚那些太\"正确\"的结果。  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210326233051838.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "左图是分类任务使用回归方式预测结果，绿色的线是一个比较理想的模型，可以比较好的用回归来预测我们的结果，但是图二这种情况就会导致我们的模型发生偏离变成了紫色的这部分，这效果反而不好了，就是因为他被远远大于1的这部分“他认为是错误的”数据给“带偏了”。  \n",
    "而且实际中两者不一定有这类线性的关系，到最后不一定会有一个好的结果。  \n",
    "\n",
    "### Generative Model\n",
    "两个箱子里面有两种不同的球，球在两个箱子里面的比例不一样，随机从一个箱子里面取一个A球的概率是多少？  \n",
    "首先我们要对数据进行分析，我们最少需要4种数据。  \n",
    "1、球在两个箱子里面的比例（p(c1)/p(c2)）  \n",
    "2、两个箱子随机抽取到的比例(p(A|c1)/p(A|c2))  \n",
    "有了这4个值才可以开始构建模型进行计算。  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210327231511792.png)  \n",
    "经过计算得到的公式如上图所示。  \n",
    "\n",
    "如果生成一个模型那么模型的公式是什么呢？  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210327231602645.png)  \n",
    "***  \n",
    "### 分类的理想步骤\n",
    "* 寻找一个模型  \n",
    "（输出的结果是float，线性结果输出是整型。）  \n",
    "* loss的定义：f在训练数据上得到不正确结果的次数，次数越小越好  \n",
    "### 宝可梦分类\n",
    "通过已有的一些数据区分未知的宝可梦的属性。  \n",
    "宝可梦有18种不一样的属性，属于多分类任务。  \n",
    "\n",
    "#### 第一步收集data\n",
    "假设收集先出现的300只为训练集后面的为校验集。\n",
    "\n",
    "比如：\n",
    "皮卡丘的输出就是电  \n",
    "杰尼龟的输出就是水  \n",
    "妙蛙草的输出就是草  \n",
    "……  \n",
    "***  \n",
    "#### 第二步数据处理   \n",
    "以二分类为例（水系的和一般系的）  \n",
    "class1是水系class2是一般系的。  \n",
    "把编号小于400的作为训练集，大于的作为验证集。  \n",
    "其中水系的79只（个），一般系的61只（个）  \n",
    "\n",
    "#### 第三步模型假设。  \n",
    "我们知道了数据和上面`Generative Model`一样，class1是水系，class2是一般系。  \n",
    "从里面随机取一只宝可梦水系的概率是多少呢？？？  \n",
    "\n",
    "p(水系）= 79/（79+61）=56%  \n",
    "那么一般系呢？  \n",
    "同理  \n",
    "p(一般系）=  61/（79+61）= 44%  \n",
    "***  \n",
    "#### 海龟的概率\n",
    "如果从水系的里面抽取一只出来是海龟那么他的概率是多少呢？  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210327233859597.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "水系的有79只其中杰尼杰尼的杰尼龟，可达鸭，蚊香蝌蚪……都是那么水龟的概率是多少呢？  \n",
    "\n",
    "首先把这些宝可梦的特征用向量来表示。  \n",
    "\n",
    "\n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/2021032723433735.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "通过他们的防御力和特殊防御力可以获得一张散点图 。里面每一个点代表了一只宝可梦。  \n",
    "***   \n",
    "那我们得到海龟的概率是多少呢？  \n",
    "\n",
    "这个值和我们的均值`𝝁`还有协方差矩阵`𝜮`决定。  \n",
    "通过`𝝁`和`𝜮`得到一个模型，然后通过模型可以得到一个值。  \n",
    "不同的均值和协方差矩阵构建的模型是完全不一样的。  \n",
    "\n",
    "\n",
    "如果这两个值固定得到的一个模型，那么数据带进模型得到的值越小我们抽到这个宝可梦的概率就越大。  \n",
    "\n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328000627700.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "假设水系宝可梦的模型值如上  \n",
    "我们模型的值可以用下面的公式来表示：  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328000722783.png)  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328000808763.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "画出来的图就类似于上面的圆，如果一个宝可梦的值是new那么他是水系的概率就 没有那么高，月接近圆里面概率越高。  \n",
    "***  \n",
    "### 模型的由来\n",
    "上面提到了是由均值和协方差矩阵矩阵决定的那么这两个值怎么来呢？  \n",
    "每一个模型都可以抽取到我们所有的宝可梦，只不过概率不一样。  \n",
    "概率值是每一只宝可梦预测值的积，那么我们要怎么样选取最好的那一个模型呢？  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328002232287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "通过上面的公式可以求得最好 的值。  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328002403524.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "### 进行分类\n",
    "我们已经把两个模型都获取好了，接下来就是分类的问题。  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328002619350.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "把数值带人我们之前的那些公式，然后 就是可以获得一个标准，如果这个值大于0.5那么就是就是水系的反之就是普通系的。  \n",
    "经过计算效果都不是很好，没有把水系宝可梦和普通系的宝可梦明显的进行区分，最后的结果不是很好，预测值只有46%。  \n",
    "\n",
    "### 改进\n",
    "之前是把宝可梦放在两个盒子里面数据参数非常多，能不能假设他们都在一个盒子里面就是放的位置分布不一样呢？  \n",
    "\t![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328003825757.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "均值`𝝁`不相同，但是协方差矩阵`𝜮`是一样的（类似于一个盒子）\t  \n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328004226718.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n",
    "那么这个\"盒子\"的大小也需要重新计算。对数据进行加权平均以后就可以得到结果。  \n",
    "通过这样子计算准确率得到了54%  \n",
    "然后把每个宝可梦的7个数据代入 在7维的空间里面最后的准确率达到了73%  \n",
    "***  \n",
    "### 采用不同的分布方式  \n",
    "不同的分布方式 可以得到不一样的结果  \n",
    "如果你假设所有的维度都是独立的，那么你就使用了朴素贝叶斯分类器。  \n",
    "对于二元特征，你可以假设它们来自伯努利分布。  \n",
    "\n",
    "对于不同的假设最后的结果也是不一样的，如果假设是比较精准的效果就会比较好，如果不是精准的最后的效果也不会很好。  \n",
    "\n",
    "### Posterior Probability\n",
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/2021032801021057.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzA5Mw==,size_16,color_FFFFFF,t_70)  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 作者简介\r\n",
    "> 作者：三岁  \r\n",
    "经历：自学python，现在混迹于paddle社区，希望和大家一起从基础走起，一起学习Paddle  \r\n",
    "csdn地址：https://blog.csdn.net/weixin_45623093/article/list/3  \r\n",
    "我在AI Studio上获得钻石等级，点亮7个徽章，来互关呀~ https://aistudio.baidu.com/aistudio/personalcenter/thirdview/284366 \r\n",
    "\r\n",
    ">传说中的飞桨社区最菜代码人，让我们一起努力！  \r\n",
    "记住：三岁出品必是精品 （~~不要脸系列~~）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "PaddlePaddle 2.0.0b0 (Python 3.5)",
   "language": "python",
   "name": "py35-paddle1.2.0"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
